#ifndef OUTLINE_CLOSING_OPERATOR_HPP
#define OUTLINE_CLOSING_OPERATOR_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------
#include "Operator.hpp"
#include "Gradiant.hpp"
#include "OutlineContainer.hpp"

namespace ImageAnalysis
{
//----------------------------------------------------------------------
//Cette classe permet de fermer les contours d'une image �partir d'une
// recherche des contours voisins possibles en suivant la cr�e des
// gradients
//----------------------------------------------------------------------
class OutlineClosingOperator : public Operator
{
public:
    //----------------------------------------------------------------------
    // Structure
    //----------------------------------------------------------------------

    //----------------------------------------------------------------------
    // Constructeur
    //----------------------------------------------------------------------
    OutlineClosingOperator(Gradiant* _gradiant, OutlineContainer * _outlineContainer, int _windowSize );

	//----------------------------------------------------------------------
    // Destructeur
    //----------------------------------------------------------------------
    virtual ~OutlineClosingOperator();

	//----------------------------------------------------------------------
    // Méthode permettant de calculer le gradiant de l'image
    //----------------------------------------------------------------------
	virtual void Process( );

private:
		//----------------------------------------------------------------------
		//
		//----------------------------------------------------------------------
		OutlineContainer * outlineContainer;
		Gradiant* gradiant;
		int windowSize;



        //----------------------------------------------------------------------
        // Constructeur par copie et oprérateur d'affectation en privée pour
        // interdire leur utilisation
        //----------------------------------------------------------------------
        OutlineClosingOperator( const OutlineClosingOperator& copy);
        OutlineClosingOperator& operator=( const OutlineClosingOperator& copy );
};

}
#endif //OUTLINE_CLOSING_OPERATOR_HPP
